implicit abstraction